From 1d68773ad2199a0b5dfac08f8cdc54a95a0611ae Mon Sep 17 00:00:00 2001 From: Ewan Mellor Date: Wed, 6 Dec 2006 10:12:39 +0000 Subject: [PATCH] Move the actual call routed by do_legacy_api_with_uuid out of the scope of the domains_lock. The call itself is already locking as necessary, and it is important for domain_start to be able to release the lock across the scope of waitForDevices. Signed-off-by: Ewan Mellor --- tools/python/xen/xend/XendDomain.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/tools/python/xen/xend/XendDomain.py b/tools/python/xen/xend/XendDomain.py index cc3c5c783e..4b11634403 100644 --- a/tools/python/xen/xend/XendDomain.py +++ b/tools/python/xen/xend/XendDomain.py @@ -641,17 +641,22 @@ class XendDomain: return (self.get_vm_with_dev_uuid(klass, dev_uuid) != None) def do_legacy_api_with_uuid(self, fn, vm_uuid, *args, **kwargs): + dom = self.uuid_to_dom(vm_uuid) + fn(dom, *args, **kwargs) + + def uuid_to_dom(self, vm_uuid): self.domains_lock.acquire() try: for domid, dom in self.domains.items(): - if dom.get_uuid == vm_uuid: - return fn(domid, *args, **kwargs) + if dom.get_uuid() == vm_uuid: + return domid if vm_uuid in self.managed_domains: domid = self.managed_domains[vm_uuid].getDomid() - if domid == None: - domid = self.managed_domains[vm_uuid].getName() - return fn(domid, *args, **kwargs) + if domid is None: + return self.managed_domains[vm_uuid].getName() + else: + return domid raise XendInvalidDomain("Domain does not exist") finally: -- 2.30.2